
#include "../Include/TablaSimbolos.h"
TablaSimbolos::TablaSimbolos()
{
    //ctor
}

TablaSimbolos::~TablaSimbolos()
{
    //dtor
}
Elemento TablaSimbolos::getElem(string nom){

for (int i=0;i<tabla.size();i++)
    if ((tabla[i]).getNombre() == nom)
       return tabla[i];

Elemento a;
a.setTipo("nulo");
a.setValor("nulo");
a.setNombre("nulo");
a.setAmbito("nulo");
return a;

}

int TablaSimbolos::getIndice(string nombre,string ambito){
for (int i=0;i<tabla.size();i++)
    if (((tabla[i]).getNombre() == nombre)&&((tabla[i]).getAmbito()==ambito))
        return i;
 return -1;
}


bool TablaSimbolos::addElemento(Elemento nuevo){

    if (getElem(nuevo.getNombre()).getNombre()=="nulo"){//exsite otra variable del misno nombre?
      tabla.push_back(nuevo);
      return true;}
    else return false;


}

int TablaSimbolos::getInd(string nombre){
 for (int i=0;i<tabla.size();i++)
    if ((tabla[i]).getNombre() == nombre)
        return i;

}

void TablaSimbolos::Mostrar(){
cout<<"Tabla de Simbolos"<<endl;
cout<<"Tipo   | Nombre  | Valor | Ambito"<<endl;

for (int i=0;i<tabla.size();i++)
  cout<<tabla[i].getTipo()<<" "<<tabla[i].getNombre()<<" "<<tabla[i].getValor()<<" "<<tabla[i].getAmbito()<<endl;

}
void TablaSimbolos::agregar(Elemento nuevo){
tabla.push_back(nuevo);
}
